package com.mes.prepare.core.domain;

public class PrepareBusiness
{
//	private static Logger logger = Logger.getLogger(PrepareBusiness.class
//			.getName());
//
//	/**
//	 * ��ȡ���������Manager
//	 * 
//	 * @return
//	 * @throws Exception
//	 */
//	public static OperationTaskManager getOperationTaskManger()
//			throws Exception
//	{
//		OperationTaskManager operationTaskManager = (OperationTaskManager) SpringUtils
//				.getBean("operationTaskManager");
//
//		return operationTaskManager;
//
//	}
//
//	/**
//	 * ��ȡ����׼�������Manager
//	 * 
//	 * @return
//	 * @throws Exception
//	 */
//	public static PrepareTaskManager getPrepareTaskManager() throws Exception
//	{
//		PrepareTaskManager prepareTaskManager = (PrepareTaskManager) SpringUtils
//				.getBean("prepareTaskManager");
//
//		return prepareTaskManager;
//	}
//
//	/**
//	 * ������������
//	 * 
//	 * @param operationTask
//	 *            ��������
//	 * @throws Exception
//	 *             �������̵��쳣
//	 */
//	public static void createJudgePrepareTask(OperationTask operationTask)
//			throws Exception
//	{
//
//	}
//
//	/**
//	 * ����ԤԼ����
//	 * 
//	 * @param operationTask
//	 *            ��������
//	 * @throws Exception
//	 *             �������̵��쳣
//	 */
//	public static void createDataPrepareTask(OperationTask operationTask)
//			throws Exception
//	{
//
//	}
//
//	/**
//	 * �����ּ�����
//	 * 
//	 * @param operationTask
//	 *            ��������
//	 * @throws Exception
//	 *             ������̵��쳣
//	 */
//	public static void createSortPrepareTask(OperationTask operationTask)
//			throws Exception
//	{
//
//	}
//
//	/**
//	 * ������������Ĺ��������嵥
//	 * 
//	 * @param taskUid
//	 *            ��������Ψһ��
//	 * @param prepareTaskUid
//	 *            ����׼������Ψһ��
//	 * @param masterShopUid
//	 *            ���Ƴ���
//	 * @param createUid
//	 *            ������
//	 * @param invDemandType
//	 *            �����嵥���ͣ���check����work���͵�
//	 * @param operationUid
//	 *            ����Ψһ��
//	 * @throws Exception
//	 */
//	@SuppressWarnings("unchecked")
//	public static void createDemandOrder(String taskUid, String prepareTaskUid,
//			String masterShopUid, String creatorUid, String invDemandType,
//			String operationUid) throws Exception
//	{
//		
//		
//		IODemandHeaderManager ioDemandHeaderManager = (IODemandHeaderManager) SpringUtils
//				.getBean("ioDemandHeaderManager");
//		IODemandHeader ioDemandHeader = ioDemandHeaderManager
//				.getIODemandByTaskUid(taskUid);
//
//		if (ioDemandHeader == null)
//		{
//			OperationTaskManager operationTaskManager = (OperationTaskManager) SpringUtils
//					.getBean("operationTaskManager");
//			List<OperationTask> oprationTaskList = (List<OperationTask>) operationTaskManager
//					.findByProperty("taskUid", taskUid);
//
//			// ��δ���������嵥����Ҫ���������嵥
//			ioDemandHeader = new IODemandHeader();
//			// �����������嵥�Ƿ��ܹ���������
//			Boolean isOK = true;
//
//			ioDemandHeader.setTaskUid(taskUid);
//			ioDemandHeader.setPrepareTaskUid(prepareTaskUid);
//			ioDemandHeader.setInvDemandType(invDemandType);
//			ioDemandHeader.setInvDemandState("1");
//			ioDemandHeader.setOpuid(operationUid);
//			ioDemandHeader.setMasterShopUid(masterShopUid);
//
//			if (oprationTaskList.size() > 0)
//			{
//				OperationTask operationTask = oprationTaskList.get(0);
//				String drawingId = operationTask.getPart().getDrawingId();
//				String batchNum = operationTask.getBatchNum();
//				String operationIdDesc = operationTask.getOperationIdDesc();
//				String taskName = operationTask.getName();
//				String routingUid = operationTask.getRoutingUid();
//
//				ioDemandHeader.setDrawingId(drawingId);
//				ioDemandHeader.setBatchNum(batchNum);
//				ioDemandHeader.setOperationIdDesc(operationIdDesc);
//				ioDemandHeader.setTaskName(taskName);
//				ioDemandHeader.setRouting(routingUid);
//			}
//
//			ioDemandHeader.setCreatorUid(creatorUid);
//			ioDemandHeader.setCreateTime(new Date());
//
//			try
//			{
//				ioDemandHeaderManager.add(ioDemandHeader);
//			}
//			catch (BaseBusinessException e)
//			{
//				e.printStackTrace();
//			}
//
//			// ��ȡ���󵥺�
//			String invDemandId = ioDemandHeader.getInvDemandId();
//		
//			// ��ȡ����Ҫ�Ĺ���
//			OperationResourceManager operationResourceManager = (OperationResourceManager) SpringUtils
//					.getBean("operationResourceManager");
//			IODemandDetailManager ioDemandDetailManager = (IODemandDetailManager) SpringUtils
//					.getBean("ioDemandDetailManager");
//			// ��ȡ�������ڵĿⷿ
//			PrepareWarehouseManager prepareWarehouseManager = (PrepareWarehouseManager) SpringUtils
//					.getBean("prepareWarehouseManager");
//			InvInfoManager invInfoManager = (InvInfoManager) SpringUtils
//					.getBean("invInfoManager");
//
//			List<OperationResource> operationResourceList = operationResourceManager
//					.getOperationResources(operationUid);
//			Long seq = 1L;
//
//			for (OperationResource operationResource : operationResourceList)
//			{
//				String resourceUid = operationResource.getResourceUid();
//				String partUid = resourceUid;
//				String partName = operationResource.getResourceName();
//				String partDesc = operationResource.getResourceDescription();
//				String drawingid = operationResource.getDrawingId();
//				Long resourceNum = operationResource.getResourceNum()==null?1:operationResource.getResourceNum();
//				String resourceDescription = operationResource
//						.getResourceDescription();
//				String useType = operationResource.getUseType();
//				Long ioQty = operationResource.getResourceNum();
//
//				// ����Ĭ�ϵĿⷿ
//				// ����ڼ���ʹ�õĹ�����һ�ַ�ʽ������ڷּ�ʹ�õ���������һ�ַ�ʽ
//				if ("check".equals(invDemandType))
//				{
//					IODemandDetail ioDemandDetail = new IODemandDetail();
//					ioDemandDetail.setInvDemandId(invDemandId);
//					ioDemandDetail.setSeq(seq++);
//					ioDemandDetail.setPartUid(resourceUid);
//					ioDemandDetail.setDrawingid(drawingid);
//					ioDemandDetail.setPartDescription(resourceDescription);
//					ioDemandDetail.setRoutingQty((double) resourceNum);
//					ioDemandDetail.setIsSendLtk("1");
//					ioDemandDetail.setDrawingid(drawingid);
//					ioDemandDetail.setIsFinishSort("0");
//					ioDemandDetail.setUseType(useType);
//					String warehouseId = prepareWarehouseManager
//							.getMaterialLocationByEmp(creatorUid, resourceUid);
//					ioDemandDetail.setWarehouseId(warehouseId);
//
//					ioDemandDetailManager.add(ioDemandDetail);
//				}
//				else
//				{
//					List<PrepareWarehouse> prepareWarehouseList = prepareWarehouseManager
//							.getPrepareWarehouseByEmp(creatorUid);
//					if(prepareWarehouseList == null||prepareWarehouseList.size()== 0)
//					{
//						EmployeeDao employeeDao = (EmployeeDao) SpringUtils
//						.getBean("employeeDao");
//						Employee employee = employeeDao.getById(creatorUid);
//						String deptId =  employee.getDeptUid();
//						prepareWarehouseList = prepareWarehouseManager
//						.getPrepareWarehouseByEmp(deptId.substring(0, 4));
//					}
//					
//					
//					List<Object[]> invInfoList = invInfoManager.getInvInfoList(
//							prepareWarehouseList, partUid);
//					//SHT 140423				
////					List<Object[]> invInfoList = invInfoManager.getInvInfoList(
////								prepareWarehouseList,partUid, partName, partDesc);
//
//					if (invInfoList == null || invInfoList.size() == 0)
//					{
//						IODemandDetail ioDemandDetail = new IODemandDetail();
//						ioDemandDetail.setInvDemandId(invDemandId);
//						ioDemandDetail.setSeq(seq++);
//						ioDemandDetail.setPartUid(resourceUid);
//						ioDemandDetail.setDrawingid(drawingid);
//						ioDemandDetail.setPartDescription(resourceDescription);
//						ioDemandDetail.setRoutingQty((double) resourceNum);
//						ioDemandDetail.setIsSendLtk("1");
//						ioDemandDetail.setNeedQty((double)ioQty);
//						ioDemandDetail.setIsFinishSort("0");
//						if(prepareWarehouseList!=null&&prepareWarehouseList.size()>0)
//							ioDemandDetail.setWarehouseId(prepareWarehouseList.get(0).getWarehouseId());		
//						ioDemandDetail.setUseType(useType);			 		
//						ioDemandDetailManager.add(ioDemandDetail);
//
//						isOK = false;
//					}
//					else
//					{
//						// �ƶ�Ԥ����Ҫ����Ŀⷿ
//						// ���Ȼ�ȡ��������������Ƿ��ܹ���������
//						Double stockNum = 0.0;
//						Double alreadyDispatchQty = 0.0;
//
//						for (Object[] objectArray : invInfoList)
//						{
//							stockNum += (Float) objectArray[0];
//						}
//
//						if (stockNum < resourceNum)
//						{
//							isOK = false;
//						}
//
//						Double totalDispatchQty = Math.min(resourceNum,
//								stockNum);
//
//						for (Object[] objectArray : invInfoList)
//						{
//							double otherNeedQty = totalDispatchQty
//									- alreadyDispatchQty;
//							// ���ȼ���Ƿ���Ҫ���з���
//							if (otherNeedQty <= 0)
//							{
//								break;
//							}
//
//							// ĳ���ⷿ����λ��������߹��ߵ�����
//							double invqty = (Float) objectArray[0];
//							// �����ĳ���ⷿ����λ������
//							double needqty = Math.min(otherNeedQty, invqty);
//							// �����Ѿ����������
//							alreadyDispatchQty += needqty;
//
//							String warehouseId = (String) objectArray[1];
//						
//							String binId = (String) objectArray[2];
//
//							IODemandDetail ioDemandDetail = new IODemandDetail();
//							ioDemandDetail.setInvDemandId(invDemandId);
//							ioDemandDetail.setSeq(seq++);
//							ioDemandDetail.setPartUid(resourceUid);
//							ioDemandDetail.setDrawingid(drawingid);
//							ioDemandDetail
//									.setPartDescription(resourceDescription);
//							ioDemandDetail.setRoutingQty((double) resourceNum);
//							ioDemandDetail.setDispatchedQty(totalDispatchQty);
//							ioDemandDetail.setWarehouseId(warehouseId);
//							ioDemandDetail.setBinId(binId);
//							ioDemandDetail.setIsSendLtk("1");
//							ioDemandDetail.setNeedQty(needqty);
//							ioDemandDetail.setIsFinishSort("0");
//							ioDemandDetail.setUseType(useType);
//
//							ioDemandDetailManager.add(ioDemandDetail);
//						}
//					}
//				}
//			}
//
//			// �ж������嵥�Ƿ������㣬Ŀǰֻ��Էּ������������ж�
//			if ("work".equals(invDemandType))
//			{
//				if (isOK)
//				{
//					ioDemandHeader.setInvDemandState("2");
//				}
//				else
//				{
//					ioDemandHeader.setInvDemandState("3");
//				}				
//				
//				ioDemandHeaderManager.update(ioDemandHeader);
//				
////				boolean flag = false;
////				List<IODemandHeader> ioDemandHeaderList = new ArrayList<IODemandHeader>();
////				ioDemandHeaderList.add(ioDemandHeader);
////				
////				MMProperty 	mmProperty = new MMProperty();
////				String  isHavePrepareManager = mmProperty.getProperty("isHavePrepareManager");
////				if("0".equals(isHavePrepareManager))
////				{				
////					ioDemandHeaderManager.deployWorkDemandOrder(ioDemandHeaderList, creatorUid);
////					flag = true;				
////					
////				}
////				else
////				{
////					
////				}
////				if(flag)
////				{
////					ioDemandHeader.setInvDemandState("4");
////				}
////				else
////				{
////					
////				}
//	
//			}
//		}
//		else
//		{
//			// �����嵥�Ѿ����ڣ�����Ҫ���κδ���
//		}
//	}
//
//	public static void deployCheckDemandOrder(String taskUid, String deployer)
//			throws Exception
//	{
//		IODemandHeaderManager ioDemandHeaderManager = (IODemandHeaderManager) SpringUtils
//				.getBean("ioDemandHeaderManager");
//		IODemandHeader ioDemandHeader = ioDemandHeaderManager
//				.getIODemandByTaskUid(taskUid);
//
//		if (ioDemandHeader == null)
//		{
//			// ��ʾ��δ�������󵥣�ֱ�ӷ��ؼ���
//		}
//		else
//		{
//			String invDemandId = ioDemandHeader.getInvDemandId();
//			String invDemandState = ioDemandHeader.getInvDemandState();
//
//			if (invDemandState == null || "".equalsIgnoreCase(invDemandState))
//			{
//				logger.info("����Ϊ" + invDemandId + "�������嵥�����ڣ�");
//			}
//			else if ("1".equals(invDemandState) || "2".equals(invDemandState)
//					|| "3".equals(invDemandState))
//			{
//				ioDemandHeader.setInvDemandState("4");
//				ioDemandHeader.setDeployer(deployer);
//				ioDemandHeader.setDeployTime(new Date());
//				ioDemandHeaderManager.update(ioDemandHeader);
//
//				logger.info("����Ϊ" + invDemandId + "�������嵥�ɹ�������");
//			}
//			else
//			{
//				// �Ѿ�����
//				logger.info("����Ϊ" + invDemandId + "�������嵥�Ѿ��������޷��ٴη�����");
//			}
//		}
//	}
//
//	public static void removeCheckDemandOrder(String taskUid) throws Exception
//	{
//		IODemandHeaderManager ioDemandHeaderManager = (IODemandHeaderManager) SpringUtils
//				.getBean("ioDemandHeaderManager");
//		IODemandHeader ioDemandHeader = ioDemandHeaderManager
//				.getIODemandByTaskUid(taskUid);
//
//		if (ioDemandHeader == null)
//		{
//			// ��ʾ��δ�������󵥣�ֱ�ӷ��ؼ���
//		}
//		else
//		{
//			String invDemandId = ioDemandHeader.getInvDemandId();
//			ioDemandHeaderManager.delete(ioDemandHeader);
//			logger.info("����Ϊ" + invDemandId + "�������嵥�Ѿ��ɹ�ɾ����");
//		}
//	}
//
//	@SuppressWarnings("unchecked")
//	public static void updateState(String taskUid, String prepareState,
//			String prepareTaskUid, String prepareTaskState, Date nextTime)
//			throws Exception
//	{
//		// ��ȡ������׼�������Լ���Ӧ�Ĺ�������
//		OperationTaskManager operationTaskManager = (OperationTaskManager) SpringUtils
//				.getBean("operationTaskManager");
//		PrepareTaskManager prepareTaskManager = (PrepareTaskManager) SpringUtils
//				.getBean("prepareTaskManager");
//
//		// �ж��Ƿ��ܹ���ȡ��
//		if (operationTaskManager == null || prepareTaskManager == null)
//		{
//			throw new Exception("�޷���ȡ��operationTaskManager����prepareTaskManager");
//		}
//
//		// �ܹ���ȡ��֮����ȥ��ȡ��Ӧ������׼����������������
//		List<OperationTask> operationTaskList = operationTaskManager
//				.findByProperty("taskUid", taskUid);
//		List<PrepareTask> prepareTaskList = prepareTaskManager.findByProperty(
//				"prepareTaskUid", prepareTaskUid);
//
//		if (operationTaskList.size() == 0 || prepareTaskList.size() == 0)
//		{
//			// throw new Exception("�޷���ȡ�������嵥������������������׼������");
//		}
//
//		// �����׳��쳣����Ϊ������Ӧ���ж�
//		if (operationTaskList.size() > 0)
//		{
//			OperationTask operationTask = operationTaskList.get(0);
//			operationTask.setPrepareState(prepareState);
//			operationTaskManager.update(operationTask);
//		}
//
//		// �����׳��쳣����Ϊ������Ӧ���ж�
//		if (prepareTaskList.size() > 0)
//		{
//			PrepareTask prepareTask = prepareTaskList.get(0);
//			prepareTask.setPrepareTaskState(prepareTaskState);
//
//			if ("206".equals(prepareTaskState)
//					|| "207".equals(prepareTaskState))
//			{
//				prepareTask.setActualStart(new Date());
//				prepareTask.setActualFinish(null);
//			}
//			else if ("208".equals(prepareTaskState))
//			{
//				prepareTask.setNextTime(nextTime);
//				prepareTask.setActualFinish(null);
//			}
//			else if ("209".equals(prepareTaskState))
//			{
//				prepareTask.setActualFinish(new Date());
//			}
//			else
//			{
//				prepareTask.setActualFinish(null);
//			}
//
//			prepareTaskManager.update(prepareTask);
//		}
//	}
}
